<!DOCTYPE html>
<html lang="zh">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    

<script>

// 异步程序：不一定按照书写顺序执行（同步程序执行完成之后再执行异步程序）
// 计时器的回调函数，事件处理函数，promise.then的回调函数，ajax的回调函数等

// 同步程序：按照书写顺序执行
// 除了上述异步回调函数，其他都是同步程序

// 需求：有多个不确定完成时间的异步程序，如何保证它们的执行顺序？1 2 3

/* setTimeout(function (){
    console.log( '异步任务1' );
},1234)
setTimeout(function (){
    console.log( '异步任务2' );
},2234)
setTimeout(function (){
    console.log( '异步任务3' );
},834) */

setTimeout(function (){
    console.log( '异步任务1' );
    setTimeout(function (){
        console.log( '异步任务2' );
        setTimeout(function (){
            console.log( '异步任务3' );
        },834)
    },2234)
},1234)

// 回调地狱：多个回调函数嵌套，不方便阅读和维护

</script>
</body>
</html>